home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Lib / or / or2pe.py < prev    next >
Encoding:
Text File  |  1991-12-18  |  5.1 KB  |  199 lines

  1. -- or2pe: OR structure to P1 OR name
  2.  
  3.  
  4. -- @(#) $Header: /xtel/pp/pp-beta/Lib/or/RCS/or2pe.py,v 6.0 1991/12/18 20:23:08 jpo Rel $
  5. --
  6. -- $Log: or2pe.py,v $
  7. -- Revision 6.0  1991/12/18  20:23:08  jpo
  8. -- Release 6.0
  9. --
  10. --
  11. --
  12.  
  13.  
  14. OR DEFINITIONS ::=
  15.  
  16. %{
  17. #ifndef lint
  18. static char *Rcsid = "@(#)$Header: /xtel/pp/pp-beta/Lib/or/RCS/or2pe.py,v 6.0 1991/12/18 20:23:08 jpo Rel $";
  19. #endif  lint
  20.  
  21. #include "util.h"
  22. #include "or.h"
  23. #include <ctype.h>
  24.  
  25. # define PEPYPARM OR_ptr
  26.  
  27. # define or_present(or, type) (or_locate(or, type) != NULLOR)
  28.  
  29. PE      or2pe (or)
  30. OR_ptr  or;
  31. {
  32.         PE      pe = NULLPE;
  33.         PE tpe;
  34.  
  35.         if (build_OR_ORName (&pe, 1, 0, NULLCP, or) == NOTOK) {
  36.                 if (pe)
  37.                         pe_free (pe);
  38.                 return NULLPE;
  39.         }
  40.                         /* SEK - strip off the APPLICATION TAG */
  41.         tpe = pe -> pe_cons;
  42.         pe -> pe_cons = NULLPE;
  43.         pe_free (pe);
  44.         return tpe;
  45. }
  46.  
  47. #undef DEBUG
  48. %}
  49.  
  50. BEGIN
  51.  
  52. ENCODER build
  53. -- O/R name
  54.  
  55. ORName ::=
  56.         [APPLICATION 0]
  57.             IMPLICIT SEQUENCE {
  58.                 standard
  59.                     StandardAttributeList [[p parm]],
  60.  
  61.                 domaindefined
  62.                     DomainDefinedAttributeList [[p parm]] 
  63.                     OPTIONAL <<or_present (parm, OR_DD)>>
  64.             }
  65.  
  66. StandardAttributeList 
  67.         %{
  68.                 OR_ptr op;
  69.         %} ::=
  70.         SEQUENCE {
  71.                 CountryName
  72.                 [[p or_locate (parm, OR_C)]]
  73.                         OPTIONAL
  74.                         <<or_present (parm, OR_C) >>,
  75.  
  76.                 AdministrationDomainName
  77.                 [[p or_locate (parm, OR_ADMD)]]
  78.                         OPTIONAL
  79.                         << or_present (parm, OR_ADMD) >>,
  80.  
  81.             [0]
  82.                 IMPLICIT X121Address
  83.                 [[s or_value (parm, OR_X121)]]
  84.                         OPTIONAL
  85.                         << or_present (parm, OR_X121) >>,
  86.  
  87.             [1]
  88.                 IMPLICIT TerminalID [[s or_value (parm, OR_TID) ]]
  89.                 OPTIONAL << or_present (parm, OR_TID) >>,
  90.  
  91.             [2]
  92.                 PrivateDomainName
  93.                 [[p or_locate (parm, OR_PRMD)]]
  94.                 OPTIONAL << or_present (parm, OR_PRMD) >>,
  95.  
  96.             [3]
  97.                 IMPLICIT OrganizationName [[s or_value (parm, OR_O)]]
  98.                 OPTIONAL <<or_present (parm, OR_O) >>,
  99.  
  100.             [4]
  101.                 IMPLICIT UniqueUAIdentifier
  102.                 [[p or_locate (parm, OR_UAID)]]
  103.                 OPTIONAL << or_present (parm, OR_UAID) >>,
  104.  
  105.             [5]
  106.                 IMPLICIT PersonalName [[p parm]]
  107.                 OPTIONAL <<or_present (parm, OR_S)>>,
  108.  
  109.             [6]
  110.                 IMPLICIT SEQUENCE OF
  111.                         <<op = or_locate (parm, OR_OU);
  112.                                 op && op -> or_type == OR_OU;
  113.                                         op = op -> or_next >>
  114.                 OrganizationalUnit [[s op -> or_value]]
  115.                 OPTIONAL <<or_present (parm, OR_OU) >>
  116.         }
  117.  
  118. DomainDefinedAttributeList 
  119. %{
  120.         OR_ptr op;
  121. %} ::=
  122.         SEQUENCE OF << op = or_lastpart (parm);
  123.                         op && op -> or_type == OR_DD;
  124.                                 op = op -> or_prev>>
  125.                 DomainDefinedAttribute [[p op]]
  126.  
  127. DomainDefinedAttribute ::=
  128.         SEQUENCE {
  129.             type
  130.                 PrintableString [[s parm -> or_ddname]],
  131.  
  132.             value
  133.                 PrintableString [[s parm -> or_value]]
  134.         }
  135.  
  136. CountryName ::=
  137.         [APPLICATION 1]
  138.             CHOICE  << or_str_isns (parm -> or_value) ? 1 : 2 >> {
  139.                 NumericString [[s parm -> or_value ]],
  140.                 PrintableString [[s parm -> or_value ]]
  141.             }
  142.  
  143. AdministrationDomainName ::=
  144.         [APPLICATION 2]
  145.             CHOICE << or_str_isns (parm -> or_value) ? 1 : 2 >> {
  146.                 NumericString [[s parm -> or_value]],
  147.                 PrintableString [[s parm -> or_value]]
  148.             }
  149.  
  150. PrivateDomainIdentifier ::=
  151.         CHOICE << or_str_isns (parm -> or_value) ? 1 : 2 >> {
  152.             NumericString [[s parm -> or_value]],
  153.  
  154.             PrintableString [[s parm -> or_value]]
  155.         }
  156.  
  157.  
  158. X121Address ::=
  159.         NumericString
  160.  
  161. TerminalID ::=
  162.         PrintableString
  163.  
  164. OrganizationName ::=
  165.         PrintableString
  166.  
  167. UniqueUAIdentifier ::=
  168.         NumericString [[s parm -> or_value]]
  169.  
  170. PersonalName ::=
  171.         SET {
  172.             surName[0]
  173.                 IMPLICIT PrintableString [[s or_value (parm, OR_S)]],
  174.  
  175.             givenName[1]
  176.                 IMPLICIT PrintableString [[s or_value (parm, OR_G)]]
  177.                 OPTIONAL <<or_present (parm, OR_G)>>,
  178.  
  179.             initials[2]
  180.                 IMPLICIT PrintableString [[s or_value (parm, OR_I)]]
  181.                 OPTIONAL <<or_present (parm, OR_I)>>,
  182.  
  183.             generalQualifier[3]
  184.                 IMPLICIT PrintableString [[s or_value (parm, OR_GQ)]]
  185.                 OPTIONAL <<or_present (parm, OR_GQ)>>
  186.     }
  187.  
  188. OrganizationalUnit ::=
  189.         PrintableString
  190.  
  191. PrivateDomainName ::=
  192.         CHOICE << or_str_isns (parm -> or_value) ? 1 : 2 >> {
  193.             NumericString [[s parm -> or_value]],
  194.  
  195.             PrintableString [[s parm -> or_value]]
  196.         }
  197.  
  198. END
  199.